package xyz.heyaoshare.core.service.system;

import com.mybatisflex.core.service.IService;
import xyz.heyaoshare.common.entity.bo.ResultPage;
import xyz.heyaoshare.core.controller.system.user.vo.req.*;
import xyz.heyaoshare.core.controller.system.user.vo.resp.UserDetailRespVO;
import xyz.heyaoshare.core.controller.system.user.vo.resp.UserInfoRespVO;
import xyz.heyaoshare.core.controller.system.user.vo.resp.UserListRespVO;
import xyz.heyaoshare.core.controller.system.user.vo.resp.UserPageRespVO;
import xyz.heyaoshare.core.entity.system.User;

import java.util.List;
import java.util.Set;

/**
 * 用户 Service
 * @author YueHe
 * @version 0.0.1
 * @since 2025/6/25 下午1:48
 */
public interface UserService extends IService<User> {

    /**
     * 新增用户
     *
     * @param reqVO 新增对象
     * @return 新增状态
     */
    Boolean insert(UserInsertReqVO reqVO);

    /**
     * 用户分页
     *
     * @param reqVO 分页请求
     * @return 分页数据
     */
    ResultPage<UserPageRespVO> selectPage(UserPageReqVO reqVO);

    /**
     * 用户列表
     *
     * @param reqVO 请求参数
     * @return 用户列表
     */
    List<UserListRespVO> selectList(UserListReqVO reqVO);

    /**
     * 用户详情
     *
     * @param reqVO 请求参数
     * @return 详情数据
     */
    UserDetailRespVO selectDetail(UserDetailReqVO reqVO);

    /**
     * 删除用户
     *
     * @param reqVO 请求数据
     * @return 删除状态
     */
    Boolean delete(UserDeleteReqVO reqVO);

    /**
     * 更新用户
     *
     * @param reqVO 更新数据
     * @return 更新状态
     */
    Boolean updateData(UserUpdateReqVO reqVO);

    /**
     * 用户信息
     *
     * @return 用户信息
     */
    UserInfoRespVO getUserInfo();

    /**
     * 用户权限信息
     *
     * @return 权限列表
     */
    Set<String> getPermissions();

}